package com.cskaoyan._08game._03swap;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/6 10:17
 **/
/*
练习：
定义一个学生类，该类具有一个int属性age
1.在测试类中写一个方法，交换两个Student对象的age属性
		请问能够交换成功吗？原因是什么？

2.在测试类中写一个方法，交换两个Student对象的引用（地址）
		请问能够交换成功吗？原因是什么？
 */
public class Demo {
    public static void main(String[] args) {
        Student s1 = new Student(10);
        Student s2 = new Student(20);

        System.out.println("交换之前:");
        System.out.println("s1.age = " + s1.age);
        System.out.println("s2.age = " + s2.age);

        System.out.println("------------");
        // swapValue
        //swapValue(s1, s2);
        //System.out.println("s1.age = " + s1.age);
        //System.out.println("s2.age = " + s2.age);

        swapReference(s1, s2);
        System.out.println("s1.age = " + s1.age);
        System.out.println("s2.age = " + s2.age);
    }

    public static void swapReference(Student s1, Student s2) {
        //交换两个Student对象的引用（地址）
        Student temp = s1;
        s1 = s2;
        s2 = temp;
    }

    public static void swapValue(Student s1, Student s2) {
        // 交换两个Student对象的age属性
        int temp = s1.age;
        s1.age = s2.age;
        s2.age = temp;
    }
}

class Student{
    int age;

    public Student(int age) {
        this.age = age;
    }
}